CC	=gcc
CC_FLG	=-ansi -pedantic "-I../engine DEPREACED/" -Wall -g -DDEBUG3
CC_A_FLG=-pedantic "-I../engine DEPREACED/" -Wall -g
LD	= ld
LEX	=flex
YACC	=byacc
LEX_FLG	=-l
YACC_FLG=-d -v
RM	=rm
RM_FLG	=-f
EXE	=house
GC=bgc

all: $(EXE)

$(EXE): main.o y.tab.o parser.o read.o print.o mm.o stack.o package.o error.o eval.o ops.o
	make -C $(GC)
	$(CC) $+ -lpthread  -lreadline "bgc/.libs/libgc.a" -o $@

read.o: OtherRead.c read.h
	$(CC) $(CC_FLG) -c $< -o $@

parser.o : parser.c parser.h
	$(CC) $(CC_FLG) -c $< -o $@
	
error.o : error.c 
	$(CC) $(CC_FLG) -c $< -o $@	

package.o : package.c package.h
	$(CC) $(CC_FLG) -c $< -o $@


macro.o : macro.c macro.h
	$(CC) $(CC_FLG) -c $< -o $@	

trace.o : trace.c trace.h
	$(CC) $(CC_FLG) -c $< -o $@	

hash.o : hash.c hash.h
	$(CC) $(CC_FLG) -c $< -o $@	

cons.o : cons.c cons.h
	$(CC) $(CC_FLG) -c $< -o $@	

mm.o : mm.c mm.h
	$(CC) $(CC_FLG) -c $< -o $@	

print.o : print.c print.h
	$(CC) $(CC_FLG) -c $< -o $@	

object.o : object.c object.h
	$(CC) $(CC_FLG) -c $< -o $@	

stack.o : stack.c stack.h
	$(CC) $(CC_FLG) -c $< -o $@	

main.o: main.c
	$(CC) $(CC_FLG) -c $< -o $@

y.tab.o: read.y 
	$(YACC) $(YACC_FLG) $<
	$(CC) -g $(@:.o=.c) -c -o $@	

ops.o : ops.c ops.h
	$(CC) $(CC_FLG) -c $< -o $@	

eval.o : eval.c eval.h
	$(CC) $(CC_FLG) -c $< -o $@	


clean: 
	make -C $(GC) clean
	$(RM) $(RM_FLG) *.o $(EXE) y.tab.c y.tab.h lex.yy.c y.output *~ core \#*\#

dry: 
	$(RM) $(RM_FLG) *.o $(EXE) y.tab.c y.tab.h lex.yy.c y.output *~ core \#*\#
